package com.jron.cqiu.kernel.cmdline;

/**
 * Created by Intellij IDEA.
 * <p/>
 * Shutdown.exe的参数:
 * <p/>
 * -s 就表示关闭本地计算机，
 * <p/>
 * -a 表示取消关机操作
 * <p/>
 * -i 则可以打开设置自动关机对话框，对自动关机进行设置
 * <p/>
 * -f：强行关闭应用程序
 * <p/>
 * -m \\计算机名：控制远程计算机
 * <p/>
 * -i：显示图形用户界面，但必须是Shutdown的第一个选项
 * <p/>
 * -l：注销当前用户
 * <p/>
 * -r：关机并重启
 * <p/>
 * -t 时间：设置关机倒计时
 * <p/>
 * -c "消息内容"：输入关机对话框中的消息内容（不能超127个字符）
 *
 * @Author: Yejw
 * @Date: 2008-6-11
 * @Time: 19:34:29
 */
public enum XP implements ICommand {

    /** 关机 */
    SHUTDOWN {
        public String key(Object... args) {
            return "shutdown -s -t 00";
        }
        public void eval(Object... args) {
            Exec.exec(SHUTDOWN);
        }},

    /** 重启 */
    RESTART {
        public String key(Object... args) {
            return "shutdown -r -t 00";
        }
        public void eval(Object... args) {
            Exec.exec(RESTART);
        }},

    /** 注销 */
    LOGOFF {
        public String key(Object... args) {
            return "shutdown -l";
        }
        public void eval(Object... args) {
            Exec.exec(LOGOFF);
        }},

    /** 取消 */
    CANCEL {
        public String key(Object... args) {
            return "shutdown -a";
        }
        public void eval(Object... args) {
            Exec.exec(CANCEL);
        }},

    /** 定时关机 默认为12:00 */
    SHUTDOWN_AT {
        public String key(Object... args) {
            return String.format("at %s shutdown -s", (args.length > 0 ? args[0].toString() : "12:00"));
        }
        public void eval(Object... args) {
            Exec.exec(SHUTDOWN_AT.key(args));
        }},

    /** 倒计时关机 默认为100秒 */
    SHUTDOWN_TIME {
        public String key(Object... args) {
            return String.format("shutdown -s -t %d", (args.length > 0 ? Long.parseLong(args[0].toString()) : 100));
        }
        public void eval(Object... args) {
            Exec.exec(SHUTDOWN_TIME.key(args));
        }},

    /** 复制文件 arg 1: 源文件 arg 2: 目标文件夹 */
    COPY {
        public String key(Object... args) {
            if (args.length < 2) return "";
            System.out.println("Source: " + args[0] + ", Dest: " + args[1]);
            return String.format("cmd /C copy %s %s", args[0], args[1]);
        }
        public void eval(Object... args) {
            Exec.exec(COPY.key(args));
        }}

}
